package com.tencent.wxcloudrun.controller.fangdong;

import com.tencent.wxcloudrun.config.ApiResponse;
import com.tencent.wxcloudrun.config.RedisLock;
import com.tencent.wxcloudrun.pojo.dto.req.ApplyLandlordReq;
import com.tencent.wxcloudrun.pojo.dto.resp.GetApplyPageResp;
import com.tencent.wxcloudrun.pojo.dto.resp.PersonInfoResp;
import com.tencent.wxcloudrun.service.business.fangdong.PersonService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;

/**
 * 房东的个人信息页
 */
@RestController
@RequestMapping("person")
@Validated
public class PersonController {

    @Resource
    private PersonService personService;

    /**
     * 进入房东首页时调用，用于判断当前用户是不是已有房东或助理身份，如果没有，就提示用户可以通过【个人信息】模块进行申请。
     */
    @GetMapping("isLandlord")
    public ApiResponse<String> isLandlord() {
        return new ApiResponse<>(personService.isLandlord());
    }

    /**
     * 进入【个人信息】页的查询展示
     */
    @GetMapping("getInfo")
    public ApiResponse<PersonInfoResp> getInfo() {
        return new ApiResponse<>(personService.getInfo());
    }

    /**
     * 当当前用户不是房东时，进入房东的个人信息页时，点击申请按钮之后，进入申请页面时调用此接口获取审批页面数据。
     */
    @GetMapping("getApplyPage")
    public ApiResponse<GetApplyPageResp> getApplyPage() {
        return new ApiResponse<>(personService.getApplyPage());
    }

    /**
     * 房东在【个人信息】页点击变更申请后触发
     */
    @PostMapping("applyLandlord")
    @RedisLock(prefix = "applyLandlord")
    public ApiResponse<String> applyLandlord(@Valid @RequestBody ApplyLandlordReq req) {
        return new ApiResponse<>(personService.applyLandlord(req));
    }

    /**
     * 修改手机号
     */
    @GetMapping("updateTel")
    @RedisLock(prefix = "updateTel")
    public ApiResponse<String> updateTel(@NotBlank(message = "新手机号不能为空") @RequestParam("newTel") String newTel) {
        return new ApiResponse<>(personService.updateTel(newTel));
    }
}
